package com.bcbim.smart_water.file.service;

import com.bcbim.common.sys.Code;
import com.bcbim.smart_water.file.mapper.FileMapper;
import com.bcbim.smart_water_interface.file.dao.FileDAO;
import com.bcbim.smart_water_interface.file.dao.FileLineDAO;
import com.bcbim.smart_water_interface.file.dao.FilePointDAO;
import com.bcbim.smart_water_interface.file.dto.FileDTO;
import com.bcbim.smart_water_interface.file.service.FileService;
import com.bcbim.smart_water_interface.file.vo.FileVO;
import com.bcbim.smart_water_interface.file.vo.ListFileVO;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @version V 1.0.0
 * @Description： 文件管理 service实现类
 * @Author: haomeijie
 * @Date: 2021/9/15 13:35
 **/
@Service(timeout = 60 * 1000, group = "pipeFile", version = "1.0.0")
public class FileServiceImpl implements FileService {

    @Autowired
    private FileMapper fileMapper;

    /**
     * @Description： 统计文件夹下有没有文件
     * @Param: folderId 文件夹id
     * @Return: boolean
     * @Author: haomeijie
     * @Date: 2021/9/15 13:47
     */
    @Override
    public boolean getFileCountByFolderId(String folderId) {
        return fileMapper.getFileCountByFolderId(folderId) > 0 ? false : true;
    }

    /**
     * @Description： 新增文件
     * @Param: folderId 文件夹id
     * @Param: displayName 文件显示名称
     * @Param: keepName 文件保存名称
     * @Return: int
     * @Author: haomeijie
     * @Date: 2021/9/16 11:29
     */
    @Override
    public Integer insertFile(FileDAO fileDAO) {
        return fileMapper.insertFile(fileDAO);
    }

    /**
     * @Description： 修改文件
     * @Param: folderId 文件夹id
     * @Param: displayName 文件显示名称
     * @Param: keepName 文件保存名称
     * @Param: del 删除标识
     * @Return: int
     * @Author: haomeijie
     * @Date: 2021/9/16 11:29
     */
    @Override
    public Integer updateFile(FileDAO fileDAO) {
        return fileMapper.updateFile(fileDAO);
    }

    /**
     * @Description： 获取文件信息
     * @Param: id 文件id
     * @Return: FileVO
     * @Author: haomeijie
     * @Date: 2021/9/16 13:26
     */
    @Override
    public FileVO getFile(String id) {
        return fileMapper.getFile(id);
    }

    /**
     * @Description： 获取文件夹下的所有文件数量
     * @Param: folderId 文件夹id
     * @Param: userId 用户id
     * @Param: displayName 文件名
     * @Return:
     * @Author: haomeijie
     * @Date: 2021/9/16 15:28
     */
    @Override
    public Integer getFileListCountByFolderId(FileDTO fileDTO) {
        return fileMapper.getFileListCountByFolderId(fileDTO);
    }

    /**
     * @Description： 获取文件夹下的所有文件列表
     * @Param: folderId 文件夹id
     * @Param: userId 用户id
     * @Param: displayName 文件名
     * @Param: pageNum 当前页码数
     * @Param: pageSize 每页记录条数
     * @Return:
     * @Author: haomeijie
     * @Date: 2021/9/16 15:28
     */
    @Override
    public List<ListFileVO> getFileListByFolderId(FileDTO fileDTO) {
        return fileMapper.getFileListByFolderId(fileDTO);
    }

    /**
     * 批量添加文件与管点映射关系
     *
     * @param list
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/27 17:30
     */
    @Override
    public int batchInsertFilePoint(List<FilePointDAO> list) {
        return fileMapper.batchInsertFilePoint(list);
    }

    /**
     * 批量添加文件与管线映射关系
     *
     * @param list
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/27 17:32
     */
    @Override
    public int batchInsertFileLine(List<FileLineDAO> list) {
        return fileMapper.batchInsertFileLine(list);
    }

    @Override
    public int deleteFilePoint(String fileId) {
        return fileMapper.deleteFilePoint(fileId);
    }

    @Override
    public int deleteFileLine(String fileId) {
        return fileMapper.deleteFileLine(fileId);
    }

    /**
     * 图纸映射列表总数量
     *
     * @param fileDTO
     * @return int
     * @Author: haomeijie
     * @Date: 2021/10/28 10:38
     */
    @Override
    public int listFileCount(FileDTO fileDTO) {
        return fileMapper.listFileCount(fileDTO);
    }

    /**
     * 图纸映射列表查询
     *
     * @param fileDTO
     * @return List<Code>
     * @Author: haomeijie
     * @Date: 2021/10/28 10:36
     */
    @Override
    public List<Code> listFile(FileDTO fileDTO) {
        return fileMapper.listFile(fileDTO);
    }

    /**
     * 获取文件管点，管线的映射关系
     *
     * @param fileId
     * @return List<PipeListCodeVO>
     * @Author: haomeijie
     * @Date: 2021/10/28 11:00
     */
    @Override
    public Map<String, Object> getFilePointLine(String fileId) {
        Map<String, Object> map = new HashMap<>();
        map.put("pointList", fileMapper.getFilePoint(fileId));
        map.put("lineList", fileMapper.getFileLine(fileId));
        return map;
    }

    /**
     * 获取文件管点的映射关系
     *
     * @param fileId
     * @return List<Code>
     * @Author: haomeijie
     * @Date: 2021/10/28 11:00
     */
    @Override
    public List<Code> getFilePoint(String fileId) {
        return fileMapper.getFilePoint(fileId);
    }

    /**
     * 获取文件管线的映射关系
     *
     * @param fileId
     * @return List<Code>
     * @Author: haomeijie
     * @Date: 2021/10/28 11:00
     */
    @Override
    public List<Code> getFileLine(String fileId) {
        return fileMapper.getFileLine(fileId);
    }

    @Override
    public List<FileVO> getFileByPointId(List<String> pointIds) {
        return fileMapper.getFileByPointId(pointIds);
    }

    @Override
    public List<FileVO> getFileByLineId(List<String> lineIds) {
        return fileMapper.getFileByLineId(lineIds);
    }
}
